@echo off
chcp 65001 >nul
echo ========================================
echo    五子棋游戏 Protobuf 代码生成工具
echo ========================================
echo.

REM 获取当前脚本所在目录
set PROTO_DIR=%~dp0
REM 移除尾部反斜杠
if "%PROTO_DIR:~-1%"=="\" set PROTO_DIR=%PROTO_DIR:~0,-1%
set PROTO_FILE=%PROTO_DIR%\game.proto

REM 设置输出目录
set SERVER_OUT=%PROTO_DIR%\..\server\src\main\java
set CLIENT_OUT=%PROTO_DIR%\..\client\Assets\Scripts\Proto

echo [1/5] 检查 protoc 是否安装...
where protoc >nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 未找到 protoc 编译器！
    echo.
    echo 请先安装 protoc:
    echo 1. 下载: https://github.com/protocolbuffers/protobuf/releases
    echo 2. 解压并添加到系统 PATH 环境变量
    echo 3. 重新打开命令行窗口
    echo.
    pause
    exit /b 1
)
echo [成功] protoc 已安装
protoc --version
echo.

echo [2/5] 检查 proto 文件...
if not exist "%PROTO_FILE%" (
    echo [错误] 找不到 proto 文件: %PROTO_FILE%
    pause
    exit /b 1
)
echo [成功] proto 文件存在: game.proto
echo.

echo [3/5] 生成 Java 代码 (服务器端)...
if not exist "%SERVER_OUT%" (
    echo [警告] 服务器输出目录不存在，正在创建...
    mkdir "%SERVER_OUT%"
)

protoc --java_out="%SERVER_OUT%" --proto_path="%PROTO_DIR%" "%PROTO_FILE%"
if %errorlevel% neq 0 (
    echo [错误] Java 代码生成失败！
    pause
    exit /b 1
)
echo [成功] Java 代码已生成到: %SERVER_OUT%\com\gobang\proto\
echo.

echo [4/5] 生成 C# 代码 (客户端)...
if not exist "%CLIENT_OUT%" (
    echo [警告] 客户端输出目录不存在，正在创建...
    mkdir "%CLIENT_OUT%"
)

protoc --csharp_out="%CLIENT_OUT%" --proto_path="%PROTO_DIR%" "%PROTO_FILE%"
if %errorlevel% neq 0 (
    echo [错误] C# 代码生成失败！
    pause
    exit /b 1
)
echo [成功] C# 代码已生成到: %CLIENT_OUT%\
echo.

echo [5/5] 清理旧的 proto 文件...
REM 删除服务器旧的 proto 文件
if exist "%PROTO_DIR%..\server\src\main\proto\game.proto" (
    del "%PROTO_DIR%..\server\src\main\proto\game.proto"
    echo [清理] 已删除服务器旧 proto 文件
)

REM 删除客户端旧的 proto 文件
if exist "%CLIENT_OUT%\game.proto" (
    del "%CLIENT_OUT%\game.proto"
    echo [清理] 已删除客户端旧 proto 文件
)
echo.

echo ========================================
echo          代码生成完成！
echo ========================================
echo.
echo 生成的文件:
echo   服务器端: %SERVER_OUT%\com\gobang\proto\GameProto.java
echo   客户端:   %CLIENT_OUT%\Game.cs
echo.
echo 提示:
echo   1. 服务器端需要重新编译项目
echo   2. Unity 客户端会自动检测到新文件
echo   3. 如有编译错误，请刷新 Unity 编辑器
echo.
pause
